package br.uefs.ecomp.myBook.model;

import java.io.File;
import java.io.IOException;
import java.util.Scanner;
import java.util.regex.Pattern;

import javax.swing.Icon;
import javax.swing.ImageIcon;

/**
 * Representa os metadados de um arquivo de texto
 * 
 * @author Victor
 * 
 */
@SuppressWarnings("serial")
public class TextFile extends GeneralFile {

	private int wordCount;
	private int charCount;

	private static transient final Icon DEFAULT_ICON = new ImageIcon(MyBookSystem.PATH+MyBookSystem.ICONFOLDER+"Document.png");
	
	/**
	 * Cria um novo arquivo de texto com base no path
	 * 
	 * @param path
	 *            O caminho do arquivo de texto
	 * @throws IOException
	 */
	public TextFile(String path) throws IOException {
		super(path);

		File tmp = new File(path);
		Scanner sc = new Scanner(tmp, "ISO-8859-1").useDelimiter(Pattern
				.compile("[^\\p{L}\\p{N}$]"));
		while (sc.hasNext()) {
			String r = sc.next();
			if (r.length() > 0)
				wordCount++;
			charCount += r.length() + 1;
		}
		sc.close();

	}

	/**
	 * Retorna a quantidade de palavras do arquivo de texto
	 * 
	 * @return A quantidade de palavras
	 */
	public int getWordCount() {
		return wordCount;
	}

	/**
	 * Retorna a quantidade de caracteres de um arquivo
	 * 
	 * @return A quantidade de caracteres
	 */
	public int getCharCount() {
		return charCount;
	}
	
	@Override
	public Icon getIcon() {
		return DEFAULT_ICON;
	}

}
